package com.sumainfor.wx.tenant.feign;

import com.sumainfor.common.util.JsonResult;
import com.sumainfor.common.utlis.Pager;
import com.sumainfor.wx.tenant.fallback.OperationsFeignClientFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

/**
 * @Author PuaChen
 * @Create 2019-01-25 14:36
 * 运营部调用
 */
@FeignClient(value = "TANGNEST-PC-GMIO", fallback = OperationsFeignClientFallback.class)
public interface OperationsFeignClient {

    ///////////////////////////////////////////////////////////////////////////
    // 小马 定义的接口
    ///////////////////////////////////////////////////////////////////////////

    //todo

    @RequestMapping("/tenant/key/ComplaintTypeContrcoller/getComplaintType")
    JsonResult getComplaintType();

    /**
     * 查询租客已支付的账单列表
     **/
    @GetMapping("/tenant/key/invoice/listTenantBillHavePaid")
    JsonResult listTenantBillHavePaid(@RequestParam(value = "params") Map<String, Object> params);


    ///////////////////////////////////////////////////////////////////////////
    // 陈 定义的服务接口
    ///////////////////////////////////////////////////////////////////////////

    //todo


    ///////////////////////////////////////////////////////////////////////////
    // 陆 定义的服务接口
    ///////////////////////////////////////////////////////////////////////////

    /**
     * 功能描述:
     * 根据合同编号获取当前租客首月房租账单
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/3/24 13:34
     */
    @GetMapping("/tenant/key/bill/getFirsMonRent")
    JsonResult getFirsMonRent(@RequestParam Map<String, Object> params);


    /**
     * 功能描述:
     * 支付完成验证与操作
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/3/27 14:58
     */
    @ResponseBody
    @PostMapping("/tenant/key/bill/PaymentCompleted")
    JsonResult PaymentCompleted(@RequestBody Map<String, Object> params);

    /**
     * 功能描述:
     * 根据合同编号获取当前合同下的首月房租账单和水电账单
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/3/29 10:35
     */
    @GetMapping("/tenant/key/bill/getBillMonRentList")
    JsonResult getBillMonRentList(@RequestParam Map<String, Object> params);

    /**
     * 功能描述:
     * 支付宝转账
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/3/29 21:04
     */
    @ResponseBody
    @PostMapping("/tenant/key/bill/PayOffline")
    JsonResult PayOffline(@RequestBody Map<String, Object> params);

    @GetMapping("/tenant/key/bill/getOwnerBillAllCount")
    JsonResult getOwnerBillAllCount(@RequestParam Map<String, Object> params);

    /**
     * 功能描述:
     * 根据业主手机号获取业主合同，然后获取业主账单资料
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/4/1 14:25
     */
    @GetMapping("/tenant/key/bill/getOwnerBillList")
    JsonResult getOwnerBillList(@RequestParam(value = "params") Map<String, Object> params, @RequestParam("pager") Pager pager);

    /**
     * 功能描述:
     * 根据租客编号和出租类型获取租客所有账单
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/4/4 21:53
     */
    @GetMapping("/tenant/key/bill/getBillAllList")
    JsonResult getBillAllList(@RequestParam(value = "params") Map<String, Object> params, @RequestParam("pager") Pager pager);

    /**
     * 功能描述:
     * 根据账单编号和租客编号获取账单详情
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/4/6 15:57
     */
    @GetMapping("/tenant/key/bill/getBillAllBiIdMap")
    JsonResult getBillAllBiIdMap(@RequestParam Map<String, Object> params);

    /**
     * 功能描述:
     * 获取管家评价的分类集合
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/4/6 20:55
     */
    @GetMapping("/tenant/key/keep/getEvaluateList")
    JsonResult getEvaluateList();

    /**
     * 功能描述:
     * 租客联系管家记录
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/4/6 20:56
     */
    @PostMapping("/tenant/key/keep/AddTenantCallKeep")
    JsonResult AddTenantCallKeep(@RequestBody Map<String, Object> params);

    /**
     * 功能描述:
     * 租客对管家评价
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/4/6 20:57
     */
    @PostMapping("/tenant/key/keep/AddTenantEvaKeep")
    JsonResult AddTenantEvaKeep(@RequestBody Map<String, Object> params);

    /**
     * 功能描述:
     * 根据合同编号获取账单
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/4/15 19:21
     */
    @PostMapping("/tenant/key/bill/getBillFeeMapFile")
    JsonResult getBillFeeMapFile(@RequestBody Map<String, Object> params);

    /**
     * 功能描述:
     * 支付宝水电燃支付，审核之后重新支付
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/4/16 14:35
     */
    @PostMapping("/tenant/key/bill/UpdateBillPay")
    JsonResult UpdateBillPay(@RequestBody Map<String, Object> params);

    /**
     * 功能描述:
     * 根据账单资料生成账单支付信息
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/4/29 20:28
     */
    @PostMapping("/tenant/key/bill/setPayWechatBill")
    JsonResult setPayWechatBill(@RequestBody Map<String, Object> params);

    /**
     * 功能描述:
     * 微信账单完成支付验证
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/4/30 10:21
     */
    @PostMapping("/tenant/key/bill/PayWechatBillCensor")
    JsonResult PayWechatBillCensor(@RequestBody Map<String, Object> params);

    /**
     * 功能描述:
     * 租客端发起投诉
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/5/11 11:00
     */
    @RequestMapping(value = "/tenant/key/complaint/AddTenantComplaint", method = RequestMethod.POST)
    JsonResult AddTenantComplaint(@RequestBody Map<String, Object> params);

    /**
     * 功能描述:
     * 根据退租账单编号和租客编号获取退租账单
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/5/18 10:59
     */
    @ResponseBody
    @GetMapping("/tenant/key/with/getTanantWithdrawalMap")
    JsonResult getTanantWithdrawalMap(@RequestParam Map<String, Object> params);

    /**
     * 功能描述:
     * 根据退租账单获取退租结算单
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/5/20 10:22
     */
    @ResponseBody
    @GetMapping("/tenant/key/with/getTanantWithdrBill")
    JsonResult getTanantWithdrBill(@RequestParam Map<String, Object> params);

    /**
     * 功能描述:
     * 根据退租账单编号获取退租物品清单
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/5/20 10:22
     */
    @ResponseBody
    @GetMapping("/tenant/key/with/getWithArticleList")
    JsonResult getWithArticleList(@RequestParam Map<String, Object> params);

    /////////////////////////////
    //zhoucong定义的接口
    //
    ///////////////////////////

    /**
     * <p>
     * 根据退租账单编号获取退租费用清单
     * </p>
     *
     * @author: zhoucong
     * @since:
     */
    @ResponseBody
    @GetMapping("/tenant/key/withEva/getWithArticleEvaList")
    JsonResult getWithArticleEvaList(@RequestParam Map<String, Object> params);


    /**
     * 提交线上与线下建议
     *
     * @param params
     * @return
     */
    @PostMapping("/questionnaire/key/submitSurvey")
    JsonResult submitSurvey(@RequestBody Map<String, Object> params);
}
